package com.study.compose.coroutines

import kotlinx.coroutines.*
import java.util.concurrent.Executors.newSingleThreadExecutor

/**
 * 协程上下文与调度器
 * 所有的协程构建器会接收一个CoroutineContext的参数，用于指定调度器
 */

fun main() = runBlocking<Unit> {

    launch {
        println("默认运行在父协程的上下文中：${Thread.currentThread().name}")
    }

    launch(Dispatchers.Unconfined) {
        println("将运行在主线程中：${Thread.currentThread().name}")
    }

    launch(Dispatchers.Default) {
        println("使用默认调度器执行：${Thread.currentThread().name}")
    }

    launch(newSingleThreadExecutor().asCoroutineDispatcher()) {
        println("开启一个新的线程执行：${Thread.currentThread().name}")
    }
}